#pragma once
#include "Position.h"
#include "thread.h"
#include "scorelist.h"


struct Node
{
  // Const data after node has been setup
  const Position* pos;
  //const Search::Stack* ss;
  Depth depth;
  Value beta;
  int nodeType;
  Thread* master;
  Move threatMove;

  // Const pointers to shared data
  //MovePicker* mp;
  //SplitPoint* parent;
  Node* parent;

  // Shared data
  Lock lock;
  //volatile uint64_t slavesMask;
  //volatile int64_t nodes;
  volatile Value alpha;
  volatile Value bestValue;
  volatile Move bestMove;
  volatile int moveCount;
  volatile bool cutoff;

};

struct oNode
{
	Position position;
	//const Position* position; // better option
	Depth depth;
	//vector<ScoreMove> moves;
	list<ScoreMove> moves;

};



